//
//  LYWBBaseViewController.swift
//  智微博
//
//  Created by mac1 on 2017/4/17.
//  Copyright © 2017年 Y&Q. All rights reserved.
//

import UIKit
// Swift中,利用 extension 可以把 '函数' 按功能分类管理,便于阅读和维护
//注意
//1.extension 中不能有属性
//2. extension 中不能重写父类方法,重写父类方法,是在子类中职责,扩展是对类的扩展

/// 所有主控制器的基类控制器
class LYWBBaseViewController: UIViewController {

  /// 表格视图 - 如果用户没有登录 就不创建
  var tableView:UITableView?
  
  /// 自定义导航条
  lazy var navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: UIScreen.cz_screenWidth(), height: 64))
  
  /// 自定义的导航条目 - 以后设置导航栏内容,统一使用 navItem
  lazy var navItem = UINavigationItem()
  
  
    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
        loadData()
    }

  
  /// 重写 title 的 didSet方法
  override var title: String?{
    didSet {
      navItem.title = title
    }
  }
  
  /// 加载数据,具体的实现由子类负责 
  func loadData(){
    
  }
}

// MARK: - 设置界面
extension LYWBBaseViewController {
  func setupUI() {
     view.backgroundColor = UIColor.cz_random()
    
    
     setupTableView()
     setupNavigationbar()
  }
  
  /// 设置表格视图
  private func setupTableView(){
    tableView = UITableView(frame:view.bounds,style:.plain)
    
    view.insertSubview(tableView!, belowSubview: navigationBar)
    
    // 设置数据源和代理 -> 目的:子类直接实现数据源方法
    tableView?.delegate = self
    tableView?.dataSource = self
    
  }
  /// 设置导航条
  private func setupNavigationbar(){
     //添加导航条
    view.addSubview(navigationBar)
    
    // 将 item 设置给 bar
    navigationBar.items = [navItem]
    
    // 设置 navBar 的渲染颜色
    navigationBar.barTintColor = UIColor.cz_color(withHex: 0xf6f6f6)
    
    // 设置 navBar 的字体颜色
    navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.darkGray]
    

  }
}

// MARK:- UITableViewDataSource,Delegate
extension LYWBBaseViewController:UITableViewDelegate,UITableViewDataSource{
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 0
  }
  
  // 基类只是准备方法,子类负责具体的实现
  // 子类的数据源方法不需要 super
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // 只是保证没有语法错误
    return UITableViewCell()
  }
}
